import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class Main {
    public static void main(String[] args) {
        // 创建一个空的 ArrayList
        ArrayList<String> list = new ArrayList<>();

        // 添加元素
        list.add("Apple"); // list: [Apple]
        list.add("Banana"); // list: [Apple, Banana]
        list.add(1, "Cherry"); // list: [Apple, Cherry, Banana]

        // 添加集合中的所有元素
        ArrayList<String> fruitsToBeAdded = new ArrayList<>(Arrays.asList("Date", "Elderberry"));
        list.addAll(fruitsToBeAdded); // list: [Apple, Cherry, Banana, Date, Elderberry]

        // 输出列表
        System.out.println(list); // 实际输出: [Apple, Cherry, Banana, Date, Elderberry]

        // 移除元素
        list.remove("Banana"); // list: [Apple, Cherry, Date, Elderberry]
        list.remove(2); // list: [Apple, Cherry, Elderberry]

        // 移除满足条件的所有元素
        list.removeIf(s -> s.startsWith("E")); // list: [Apple, Cherry]

        // 替换元素
        list.set(1, "Grape"); // list: [Apple, Grape]

        // 查询元素
        boolean containsApple = list.contains("Apple"); // containsApple: true
        System.out.println(containsApple); // 实际输出: true

        // 获取元素
        String firstElement = list.get(0); // firstElement: Apple
        System.out.println(firstElement); // 实际输出: Apple

        // 查找元素的索引
        int indexOfGrape = list.indexOf("Grape"); // indexOfGrape: 1
        System.out.println(indexOfGrape); // 实际输出: 1

        // 检查列表是否为空
        boolean isEmpty = list.isEmpty(); // isEmpty: false
        System.out.println(isEmpty); // 实际输出: false

        // 转换操作
        Object[] array = list.toArray(); // array: [Apple, Grape]
        System.out.println(Arrays.toString(array)); // 实际输出: [Apple, Grape]

        // 视图和迭代器
        List<String> sublist = list.subList(0, 1); // sublist: [Apple]
        System.out.println(sublist); // 实际输出: [Apple]

        // 迭代器
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next()); // 实际输出: Apple Grape
        }

        // 列表迭代器
        ListIterator<String> listIterator = list.listIterator();
        while (listIterator.hasNext()) {
            System.out.println(listIterator.nextIndex() + ": " + listIterator.next()); // 实际输出: 0: Apple 1: Grape
        }

        // 大小和容量
        int size = list.size(); // size: 2
        System.out.println(size); // 实际输出: 2

        // 确保容量
        list.ensureCapacity(10); // 确保列表至少可以容纳10个元素

        // 修改容量为当前大小
        list.trimToSize(); // 修改列表的容量为当前元素数量

        // 清除所有元素
        list.clear(); // list: []
        System.out.println(list); // 实际输出: []
    }
}